import { METHOD, request } from "../utils/request.js"
import {
    USER, // 管理账号用户
    USER_TYPE, // 用户类型
    MENU, // 用户菜单
    ROLE, // 角色
    ROLE_MENU, // 角色菜单
    BLOG, // 博客
    BLOG_CATEGORY, // 博客分类
    PROJECT, // 项目
    PROJECT_CATEGORY, // 项目分类
    TASK, // 任务
    TASK_CATEGORY, // 任务分类
    TASK_LEVEL, // 任务等级
    DAILY, // 每日任务
    CREDIT_MONTH_BILL, // 每月信用卡账单
    CREDIT_BILL, // 每月信用卡账单记录
    MOTION, // 状态
} from "./Api.js"


//************************ 管理账号用户
/**
 * 获取管理账号用户列表
 
* @returns { 
    id : 记录id
    name : 用户名
    email : 邮箱
    phone : 手机号
    nickName : 昵称
    avatar : 头像
    token : 凭证
    province : 省
    city : 城市
    address : 地址
    password : 密码
    roleId : 角色ID
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getUser(params) {
    return request(USER, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改管理账号用户
 
 */
export async function postUser(params) {
    return request(USER, METHOD.POST, params ? params : { })
}

/**
 * 获取管理账号用户对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    name : 用户名
    email : 邮箱
    phone : 手机号
    nickName : 昵称
    avatar : 头像
    token : 凭证
    province : 省
    city : 城市
    address : 地址
    password : 密码
    roleId : 角色ID
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getUserByID(id) {
    return request(USER + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除管理账号用户
 * @param id 详情id 
 
 */
export async function deleteUserByID(id) {
    return request(USER + "/delete/" + id, METHOD.GET, {})
}

/**
 * 管理账号用户登录接口
 * @param name 用户名 
 * @param password 密码 
 
 */
export async function userLogin(name, password) {
    return request(USER + "/login", METHOD.POST, {"name": name, "password":password, })
}



//************************ 用户类型
/**
 * 获取用户类型列表
 
* @returns { 
    id : 记录id
    title : 用户类型名
    type : 用户类型 0.admin 1.mobile 2.web 3.pc 4.tv 5.miniprogram
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getUserType(params) {
    return request(USER_TYPE, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改用户类型
 
 */
export async function postUserType(params) {
    return request(USER_TYPE, METHOD.POST, params ? params : { })
}

/**
 * 获取用户类型对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 用户类型名
    type : 用户类型 0.admin 1.mobile 2.web 3.pc 4.tv 5.miniprogram
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getUserTypeByID(id) {
    return request(USER_TYPE + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除用户类型
 * @param id 详情id 
 
 */
export async function deleteUserTypeByID(id) {
    return request(USER_TYPE + "/delete/" + id, METHOD.GET, {})
}

/**
 * 用户类型登录接口
 * @param name 用户名 
 * @param password 密码 
 
 */
export async function userTypeLogin(name, password) {
    return request(USER_TYPE + "/login", METHOD.POST, {"name": name, "password":password, })
}



//************************ 用户菜单
/**
 * 获取用户菜单列表
 
* @returns { 
    id : 记录id
    title : 菜单名称
    path : 菜单路径
    icon : 菜单图标
    inVisible : 菜单不可见
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getMenu(params) {
    return request(MENU, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改用户菜单
 
 */
export async function postMenu(params) {
    return request(MENU, METHOD.POST, params ? params : { })
}

/**
 * 获取用户菜单对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 菜单名称
    path : 菜单路径
    icon : 菜单图标
    inVisible : 菜单不可见
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getMenuByID(id) {
    return request(MENU + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除用户菜单
 * @param id 详情id 
 
 */
export async function deleteMenuByID(id) {
    return request(MENU + "/delete/" + id, METHOD.GET, {})
}



//************************ 角色
/**
 * 获取角色列表
 
* @returns { 
    id : 记录id
    title : 角色名称
    type : 角色类型 0.超级权限 1.普通权限
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getRole(params) {
    return request(ROLE, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改角色
 
 */
export async function postRole(params) {
    return request(ROLE, METHOD.POST, params ? params : { })
}

/**
 * 获取角色对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 角色名称
    type : 角色类型 0.超级权限 1.普通权限
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getRoleByID(id) {
    return request(ROLE + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除角色
 * @param id 详情id 
 
 */
export async function deleteRoleByID(id) {
    return request(ROLE + "/delete/" + id, METHOD.GET, {})
}



//************************ 角色菜单
/**
 * 获取角色菜单列表
 
* @returns { 
    id : 记录id
    roleId : 菜单名称#role
    active : 是否启用 0.不启用 1.启用
    roleMenuIds : 权限菜单
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getRoleMenu(params) {
    return request(ROLE_MENU, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改角色菜单
 
 */
export async function postRoleMenu(params) {
    return request(ROLE_MENU, METHOD.POST, params ? params : { })
}

/**
 * 获取角色菜单对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    roleId : 菜单名称#role
    active : 是否启用 0.不启用 1.启用
    roleMenuIds : 权限菜单
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getRoleMenuByID(id) {
    return request(ROLE_MENU + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除角色菜单
 * @param id 详情id 
 
 */
export async function deleteRoleMenuByID(id) {
    return request(ROLE_MENU + "/delete/" + id, METHOD.GET, {})
}



//************************ 博客
/**
 * 获取博客列表
 
* @returns { 
    id : 记录id
    title : 标题
    des : 描述
    cover : 关联图片
    content : 内容(markdown格式)
    tag : 标签
    blogCategoryId : 关联博客分类#blog_category
    userId : 关联用户#user
    see : 查看
    star : 点赞
    coment : 评论
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getBlog(params) {
    return request(BLOG, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改博客
 
 */
export async function postBlog(params) {
    return request(BLOG, METHOD.POST, params ? params : { })
}

/**
 * 获取博客对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 标题
    des : 描述
    cover : 关联图片
    content : 内容(markdown格式)
    tag : 标签
    blogCategoryId : 关联博客分类#blog_category
    userId : 关联用户#user
    see : 查看
    star : 点赞
    coment : 评论
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getBlogByID(id) {
    return request(BLOG + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除博客
 * @param id 详情id 
 
 */
export async function deleteBlogByID(id) {
    return request(BLOG + "/delete/" + id, METHOD.GET, {})
}



//************************ 博客分类
/**
 * 获取博客分类列表
 
* @returns { 
    id : 记录id
    title : 博客分类名称
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getBlogCategory(params) {
    return request(BLOG_CATEGORY, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改博客分类
 
 */
export async function postBlogCategory(params) {
    return request(BLOG_CATEGORY, METHOD.POST, params ? params : { })
}

/**
 * 获取博客分类对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 博客分类名称
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getBlogCategoryByID(id) {
    return request(BLOG_CATEGORY + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除博客分类
 * @param id 详情id 
 
 */
export async function deleteBlogCategoryByID(id) {
    return request(BLOG_CATEGORY + "/delete/" + id, METHOD.GET, {})
}



//************************ 项目
/**
 * 获取项目列表
 
* @returns { 
    id : 记录id
    title : 标题
    des : 描述
    cover : 封面图片
    content : 内容
    tag : 标签
    projectCategoryId : 关联项目分类#blog_category
    userId : 关联用户#user
    progress : 进度
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getProject(params) {
    return request(PROJECT, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改项目
 
 */
export async function postProject(params) {
    return request(PROJECT, METHOD.POST, params ? params : { })
}

/**
 * 获取项目对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 标题
    des : 描述
    cover : 封面图片
    content : 内容
    tag : 标签
    projectCategoryId : 关联项目分类#blog_category
    userId : 关联用户#user
    progress : 进度
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getProjectByID(id) {
    return request(PROJECT + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除项目
 * @param id 详情id 
 
 */
export async function deleteProjectByID(id) {
    return request(PROJECT + "/delete/" + id, METHOD.GET, {})
}



//************************ 项目分类
/**
 * 获取项目分类列表
 
* @returns { 
    id : 记录id
    title : 项目分类名称
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getProjectCategory(params) {
    return request(PROJECT_CATEGORY, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改项目分类
 
 */
export async function postProjectCategory(params) {
    return request(PROJECT_CATEGORY, METHOD.POST, params ? params : { })
}

/**
 * 获取项目分类对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 项目分类名称
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getProjectCategoryByID(id) {
    return request(PROJECT_CATEGORY + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除项目分类
 * @param id 详情id 
 
 */
export async function deleteProjectCategoryByID(id) {
    return request(PROJECT_CATEGORY + "/delete/" + id, METHOD.GET, {})
}



//************************ 任务
/**
 * 获取任务列表
 
* @returns { 
    id : 记录id
    title : 任务标题
    des : 任务描述
    beginTime : 开始时间
    duration : 持续时间(分钟)
    score : 分数
    isRepeat : 是否重复 0.否 1.是
    tag : 标签
    userId : 关联用户#user
    taskCategoryId : 关联任务分类#task_category
    taskLevelId : 关联任务等级#task_level
    learnId : 关联学习#blog
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getTask(params) {
    return request(TASK, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改任务
 
 */
export async function postTask(params) {
    return request(TASK, METHOD.POST, params ? params : { })
}

/**
 * 获取任务对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 任务标题
    des : 任务描述
    beginTime : 开始时间
    duration : 持续时间(分钟)
    score : 分数
    isRepeat : 是否重复 0.否 1.是
    tag : 标签
    userId : 关联用户#user
    taskCategoryId : 关联任务分类#task_category
    taskLevelId : 关联任务等级#task_level
    learnId : 关联学习#blog
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getTaskByID(id) {
    return request(TASK + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除任务
 * @param id 详情id 
 
 */
export async function deleteTaskByID(id) {
    return request(TASK + "/delete/" + id, METHOD.GET, {})
}



//************************ 任务分类
/**
 * 获取任务分类列表
 
* @returns { 
    id : 记录id
    title : 任务分类名称
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getTaskCategory(params) {
    return request(TASK_CATEGORY, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改任务分类
 
 */
export async function postTaskCategory(params) {
    return request(TASK_CATEGORY, METHOD.POST, params ? params : { })
}

/**
 * 获取任务分类对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 任务分类名称
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getTaskCategoryByID(id) {
    return request(TASK_CATEGORY + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除任务分类
 * @param id 详情id 
 
 */
export async function deleteTaskCategoryByID(id) {
    return request(TASK_CATEGORY + "/delete/" + id, METHOD.GET, {})
}



//************************ 任务等级
/**
 * 获取任务等级列表
 
* @returns { 
    id : 记录id
    title : 任务等级名称
    level : 等级
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getTaskLevel(params) {
    return request(TASK_LEVEL, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改任务等级
 
 */
export async function postTaskLevel(params) {
    return request(TASK_LEVEL, METHOD.POST, params ? params : { })
}

/**
 * 获取任务等级对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 任务等级名称
    level : 等级
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getTaskLevelByID(id) {
    return request(TASK_LEVEL + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除任务等级
 * @param id 详情id 
 
 */
export async function deleteTaskLevelByID(id) {
    return request(TASK_LEVEL + "/delete/" + id, METHOD.GET, {})
}



//************************ 每日任务
/**
 * 获取每日任务列表
 
* @returns { 
    id : 记录id
    title : 任务标题
    taskScore : 分数
    taskNum : 任务数量
    taskFinish : 任务完成
    taskTimeOut : 任务超时
    taskUnFinish : 任务未完成
    taskList : 任务列表
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getDaily(params) {
    return request(DAILY, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改每日任务
 
 */
export async function postDaily(params) {
    return request(DAILY, METHOD.POST, params ? params : { })
}

/**
 * 获取每日任务对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 任务标题
    taskScore : 分数
    taskNum : 任务数量
    taskFinish : 任务完成
    taskTimeOut : 任务超时
    taskUnFinish : 任务未完成
    taskList : 任务列表
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getDailyByID(id) {
    return request(DAILY + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除每日任务
 * @param id 详情id 
 
 */
export async function deleteDailyByID(id) {
    return request(DAILY + "/delete/" + id, METHOD.GET, {})
}



//************************ 每月信用卡账单
/**
 * 获取每月信用卡账单列表
 
* @returns { 
    id : 记录id
    billAmt : 账单金额
    minPay : 最小支付金额
    billCycleRang : 账单日期
    billStatus : 账单状态
    compareLastMonth : 跟上月比率
    isCanStartDispute : 开始
    month : 月份
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getCreditMonthBill(params) {
    return request(CREDIT_MONTH_BILL, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改每月信用卡账单
 
 */
export async function postCreditMonthBill(params) {
    return request(CREDIT_MONTH_BILL, METHOD.POST, params ? params : { })
}

/**
 * 获取每月信用卡账单对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    billAmt : 账单金额
    minPay : 最小支付金额
    billCycleRang : 账单日期
    billStatus : 账单状态
    compareLastMonth : 跟上月比率
    isCanStartDispute : 开始
    month : 月份
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getCreditMonthBillByID(id) {
    return request(CREDIT_MONTH_BILL + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除每月信用卡账单
 * @param id 详情id 
 
 */
export async function deleteCreditMonthBillByID(id) {
    return request(CREDIT_MONTH_BILL + "/delete/" + id, METHOD.GET, {})
}



//************************ 每月信用卡账单记录
/**
 * 获取每月信用卡账单记录列表
 
* @returns { 
    id : 记录id
    authCode : 名称
    cardIndex : 卡片顺序
    cardName : 卡片名称
    cardNo : 卡片编号
    cardNolast4 : 名称
    consumeAmt : 消费金额
    consumeCurType : 名称
    curType : 代码
    effectDate : 涨跌额
    icon : 涨跌幅
    postDate : 今年以来涨跌幅
    recordStatus : 成交量
    refNo : 成交额
    tranType : 换手率
    tranTypeDesc : 滚动市盈率
    transLog : 股息收益率
    txnAmount : 市值
    txnCode : 市值
    url : 市值
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getCreditBill(params) {
    return request(CREDIT_BILL, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改每月信用卡账单记录
 
 */
export async function postCreditBill(params) {
    return request(CREDIT_BILL, METHOD.POST, params ? params : { })
}

/**
 * 获取每月信用卡账单记录对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    authCode : 名称
    cardIndex : 卡片顺序
    cardName : 卡片名称
    cardNo : 卡片编号
    cardNolast4 : 名称
    consumeAmt : 消费金额
    consumeCurType : 名称
    curType : 代码
    effectDate : 涨跌额
    icon : 涨跌幅
    postDate : 今年以来涨跌幅
    recordStatus : 成交量
    refNo : 成交额
    tranType : 换手率
    tranTypeDesc : 滚动市盈率
    transLog : 股息收益率
    txnAmount : 市值
    txnCode : 市值
    url : 市值
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getCreditBillByID(id) {
    return request(CREDIT_BILL + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除每月信用卡账单记录
 * @param id 详情id 
 
 */
export async function deleteCreditBillByID(id) {
    return request(CREDIT_BILL + "/delete/" + id, METHOD.GET, {})
}



//************************ 状态
/**
 * 获取状态列表
 
* @returns { 
    id : 记录id
    title : 日期
    fear : fear
    normal : normal
    normalNum : normal_num
    score : score
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getMotion(params) {
    return request(MOTION, METHOD.GET, params ? params : {})
}

/**
 * 添加或修改状态
 
 */
export async function postMotion(params) {
    return request(MOTION, METHOD.POST, params ? params : { })
}

/**
 * 获取状态对应的详情
 * @param id 详情id 
 
* @returns { 
    id : 记录id
    title : 日期
    fear : fear
    normal : normal
    normalNum : normal_num
    score : score
    createAt : 创建于
    updateAt : 更新于
    deleteAt : 删除于
  }
 */
export async function getMotionByID(id) {
    return request(MOTION + "/" + id, METHOD.GET, {id : id})
}

/**
 * 删除状态
 * @param id 详情id 
 
 */
export async function deleteMotionByID(id) {
    return request(MOTION + "/delete/" + id, METHOD.GET, {})
}

